#pragma once
#include "Effect.h"
#include "Matrix44.h"
#include "Texture.h"
#include "Vector3.h"

VAMPIRE_NAMESPACE_BEGIN

class _VampireExport SkyShader : public Effect
{
public:
	SkyShader(void) : mhModelViewProj(0), mModelViewProjMat(Matrix44::IDENTITY), mhTexture(0), mpTexture(NULL), mhWorldMat(0), mWorldMat(Matrix44::IDENTITY), mhEyePos(0), mEyePos(Vector3::ZERO)
	{
		setTechniqueName("SkyShader");
	}

	void             bindHandles();

	void             setTransformMatrix(const Matrix44& mat);

	void             setEyePosition(const Vector3& pos);

	void             setTexture(Texture* tex);

	void             setWorldMatrix(const Matrix44& mat);

private:
	D3DXHANDLE       mhModelViewProj;
	Matrix44         mModelViewProjMat; 
	D3DXHANDLE       mhTexture;
	Texture*         mpTexture;
	D3DXHANDLE       mhWorldMat;
	Matrix44         mWorldMat; 
	D3DXHANDLE       mhEyePos;
	Vector3          mEyePos;

	REGISTER_HELPER(SkyShader);
};

VAMPIRE_NAMESPACE_END
